/* 
	1.该文件主要用于创建Count的容器组件；
	2.容器组件不是程序员亲手创建的，是靠方法生成的；
*/
//引入connect方法，用于：创建一个容器组件，同时连接UI组件与redux
import {connect} from 'react-redux'
import { Component } from 'react'
//引入对应的actionCreator
import {
	increment,
	decrement,
	waitIncrement,
	serverIncrement
} from '../../redux/actions/count'

//定义一个UI组件
class Count extends Component {
	state = {username:'老刘'}

	render() {
		// console.log('CountUI收到的props是：',this.props)
		return (
			<div>
				<h2>当前求和为：{this.props.sum}，下方总人数：{this.props.total}</h2>
				<h4>我最爱的男人是:{this.state.username}</h4>
				<select ref={ c => this.selectNumber = c}>
					<option value="1">1</option>
					<option value="2">2</option>
					<option value="3">3</option>
				</select>&nbsp;
				<button onClick={this.increment}>+</button>&nbsp;
				<button onClick={this.decrement}>-</button> &nbsp;
				<button onClick={this.incrementIfOdd}>当前和为奇数再+</button> &nbsp;
				<button onClick={this.incrementWait}>等一等再加</button> <br/><br/>
				<button onClick={this.test}>就是想加，但不知加几？（具体加几，看服务器）</button>
			</div>
		)
	}

	//加法
	increment = ()=>{
		//获取用户的输入
		const {value} = this.selectNumber
		//调用容器组件传递过来的jia方法
		this.props.increment(value*1)
	}

	//减法
	decrement = ()=>{
		//获取用户的输入
		const {value} = this.selectNumber
		this.props.decrement(value*1)
	}

	//奇数再加
	incrementIfOdd = ()=>{
		//获取用户的输入
		const {value} = this.selectNumber
		if(this.props.sum%2){
			this.props.increment(value*1)
		}
	}

	//等一等再加
	incrementWait = ()=>{
		//获取用户的输入
		const {value} = this.selectNumber
		this.props.waitIncrement(value*1)
	}

	test = ()=>{
		this.props.serverIncrement()
	}
}

//创建一个容器组件
export default connect(
	state => ({ //映射state（state是redux中的总状态，由于reducer经过了合并，所以现在是一个对象）
		sum:state.sum,
		total:state.persons.length
	}), 
	{
		increment,
		decrement,
		waitIncrement,
		serverIncrement
	}
)(Count)